package com.fxu.framework.biz.ano;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 限流注解
 * @author fangxu
 * @version 1.0.0
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Limit {
    /**
     * 是否包含参数，true[包含参数]，false[限制接口，不管参数是否一致]
     * @return 是否包含参数
     */
    boolean param() default true;

    /**
     * 限制时间，单位秒
     * @return 限制时间
     */
    int period();

    /**
     * 限制访问次数，默认1次
     * @return 限制访问次数
     */
    int count() default 1;

    /**
     * 限制类型，限制方法还是限制IP
     * @return 限制类型
     */
    LimitType limitType() default LimitType.CUSTOMER;

}
